/***********************************************
* Filename:  		IRenderer.h
* Date:      		01/12/2014
* Mod. Date: 		01/12/2014
* Author:    		Night
* Purpose:   		Abstract class used to handle
					the initialization and 
					updates of the window.
************************************************/
#ifndef IRENDERER_H_
#define IRENDERER_H_

#include <Windows.h>

class IRenderer
{
public:
	virtual ~IRenderer( void ) = 0 { };

	virtual bool Init( const HWND _hWnd, const unsigned int _unWindowWidth, const unsigned int _unWindowHeight ) = 0;
	virtual bool Init( const char *_szFilePath ) = 0;

	virtual void Release( void ) = 0;

	virtual void Clear( void ) = 0;
	virtual void Present( void ) = 0;
	virtual void BeginScene( void ) = 0;
	virtual void EndScene( void ) = 0;

	virtual void Render( void ) = 0;

	static bool Create( IRenderer **_ppRenderer );
};

#endif